// https://leetcode.cn/problems/integer-to-roman/description/

// 题干：七个不同的符号代表罗马数字，其值如下：
//I	1
//V	5
//X	10
//L	50
//C	100
//D	500
//M	1000
// 给定一个罗马数字，将其转换成整数。

// 示例：
// 输入：s = "MCMXCIV"     输出：1994

// 碎语：很标准的模拟，按照题意解决即可

#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

#include <string>
#include <unordered_map>

class Solution
{
public:
    int romanToInt(string s)
    {
        unordered_map<char, int> hash;

        hash['I'] = 1, hash['V'] = 5,
        hash['X'] = 10, hash['L'] = 50,
        hash['C'] = 100, hash['D'] = 500,
        hash['M'] = 1000;

        int res = 0;
        for (int i = 0; i < s.size(); i++)
        {
            if (i + 1 < s.size() && hash[s[i]] < hash[s[i + 1]])
            {
                res -= hash[s[i]];
            }
            else res += hash[s[i]];
        }

        return res;
    }
};

int main()
{
    cout << Solution().romanToInt("MCMXCIV") << endl;

    return 0;
}